package com.librelato.persistencia;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import com.librelato.bean.BemAtivoBean;
import com.librelato.bean.SolicitacaoManutencaoBean;
import com.librelato.bean.TipoServicoManutencaoBean;
import com.librelato.persistencia.config.SQLConfiguracao;
import com.librelato.persistencia.enums.EnumCondicao;
import com.librelato.persistencia.interfaces.ISolicitacaoManutencaoDao;

public class SolicitacaoManutencaoDao<P extends SolicitacaoManutencaoBean>
		extends DaoGenerico<P> implements ISolicitacaoManutencaoDao<P> {

	@Override
	public String procuraPorParam(String tabela, String campo, String valor,
			EnumCondicao condicao) {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public P salvar(P p) throws Exception {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	public void excluir(P p) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void editar(P p) throws Exception {
		// TODO Auto-generated method stub

	}

	@Override
	public void preSalvar(P p) {
		// TODO Auto-generated method stub

	}

	public List<BemAtivoBean> buscaBemAtivos(Map<String, String> param)
			throws Exception {
		List<BemAtivoBean> bens = new ArrayList<BemAtivoBean>();
		BemAtivoBean bemAtivo = null;
		int psIndex = 1;
		try {
			conn = GerenciadorConexao.getConexao();
			StringBuilder sb = new StringBuilder(SQLConfiguracao.getInstance()
					.getValor("localiza_bens"));
			if (param.get("CODBEM") != null && !"".equals(param.get("CODBEM"))) {
				sb.append(" AND T9_CODBEM LIKE ?");
			}
			if (param.get("DESCRICAO") != null
					&& !"".equals(param.get("DESCRICAO"))) {
				sb.append(" AND T9_NOME LIKE ?");
			}
			if (param.get("FILIAL") != null) {
				sb.append(" AND TPS_ZFIL = ?");
				sb.append(" UNION ALL SELECT T9_CODBEM,T9_NOME FROM ST9010 WHERE ST9010.D_E_L_E_T_ <> '*' AND T9_LOCAL = ''");
			} else {
				sb.append(" UNION ALL SELECT T9_CODBEM,T9_NOME FROM ST9010 WHERE ST9010.D_E_L_E_T_ <> '*' AND T9_LOCAL = ''");
			}
			if (param.get("CODBEM") != null && !"".equals(param.get("CODBEM"))) {
				sb.append(" AND T9_CODBEM LIKE ?");
			}
			if (param.get("DESCRICAO") != null
					&& !"".equals(param.get("DESCRICAO"))) {
				sb.append(" AND T9_NOME LIKE ?");
			}
			ps = conn.prepareStatement(sb.toString());
			if (param.get("CODBEM") != null && !"".equals(param.get("CODBEM"))) {
				ps.setString(psIndex++, param.get("CODBEM").toUpperCase()
						+ "%%");
			}
			if (param.get("DESCRICAO") != null
					&& !"".equals(param.get("DESCRICAO"))) {
				ps.setString(psIndex++, param.get("DESCRICAO").toUpperCase()
						+ "%%");
			}
			if (param.get("FILIAL") != null) {
				ps.setString(psIndex++, param.get("FILIAL"));
			}
			if (param.get("CODBEM") != null && !"".equals(param.get("CODBEM"))) {
				ps.setString(psIndex++, param.get("CODBEM").toUpperCase()
						+ "%%");
			}
			if (param.get("DESCRICAO") != null
					&& !"".equals(param.get("DESCRICAO"))) {
				ps.setString(psIndex++, "%%"
						+ param.get("DESCRICAO").toUpperCase() + "%%");
			}
			rs = ps.executeQuery();
			while (rs.next()) {
				bemAtivo = new BemAtivoBean();
				bemAtivo.setCodigo(rs.getString("T9_CODBEM").trim());
				bemAtivo.setDescricao(rs.getString("T9_NOME").trim());
				bens.add(bemAtivo);
			}

		} catch (Exception e) {
			e.printStackTrace();
		}
		return bens;

	}

	public List<TipoServicoManutencaoBean> buscaTiposServico(
			Map<String, String> param) {
		TipoServicoManutencaoBean tipo = null;
		List<TipoServicoManutencaoBean> tipos = new ArrayList<TipoServicoManutencaoBean>();
		try {
			conn = GerenciadorConexao.getConexao();
			StringBuilder sb = new StringBuilder(SQLConfiguracao.getInstance()
					.getValor("localiza_tipos_servico"));
			if (param.get("CODTIPO") != null
					&& !"".equals(param.get("CODTIPO"))) {
				sb.append(" AND TQ3_CDSERV LIKE ?");
			}
			sb.append(" ORDER BY TQ3_CDSERV");
			ps = conn.prepareStatement(sb.toString());
			if (param.get("CODTIPO") != null
					&& !"".equals(param.get("CODTIPO"))) {
				ps.setString(1, param.get("CODTIPO").toUpperCase() + "%%");
			}
			rs = ps.executeQuery();
			while (rs.next()) {
				tipo = new TipoServicoManutencaoBean();
				tipo.setCodigo(rs.getString("TQ3_CDSERV").trim());
				tipo.setDescricao(rs.getString("TQ3_NMSERV").trim());
				tipos.add(tipo);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}

		return tipos;
	}

}
